package com.hailiao.beidou.message.bd.ble

import com.hailiao.beidou.comm.bluetooth.data.NotifySettingInfo
import com.hailiao.beidou.message.bd.constant.ProtoVersion
import com.hailiao.beidou.message.bd.data.BDDeviceStatusData
import kotlinx.coroutines.flow.Flow

/**
 * 蓝牙设备
 * @Author d10ng
 * @Date 2024/3/4 17:36
 */
interface IBLEDevice {

    /**
     * 通过蓝牙名称判断是否为当前设备
     * @param name String
     * @return Boolean
     */
    fun instantOf(name: String): Boolean

    /**
     * 获取设备图片ID
     * @return Int
     */
    fun getIconID(): Int

    /**
     * 支持的协议版本
     * @return ProtoVersion
     */
    fun getProtoVersion(): ProtoVersion

    /**
     * 获取连接配置
     * @return NotifySettingInfo
     */
    fun getConnectSetting(): NotifySettingInfo

    /**
     * 获取数据发送分包大小
     * @return Int
     */
    fun getSendDataPackageSize(): Int

    /**
     * 设备连接初始化处理
     */
    suspend fun onDeviceConnected()

    /**
     * 设置中心卡号
     * @param card String
     */
    suspend fun setCenterCard(card: String)

    /**
     * 获取设备状态数据表
     * @return Flow<List<BDDeviceStatusData>>
     */
    fun getDeviceStatusDataListFlow(): Flow<List<BDDeviceStatusData>>
}